# ============================================
# SSH守护进程配置文件
# ============================================
# 本文件由Ansible自动生成 - 请勿手动编辑
# 定义了SSH服务的安全配置和访问控制策略

# ============================================
# 基本连接配置
# ============================================

# SSH服务监听端口
Port {{ security_ssh_port }}

# SSH协议版本（建议使用2）
Protocol {{ security_ssh_protocol }}

# ============================================
# 身份验证配置
# ============================================

# 是否允许root用户登录
PermitRootLogin {{ security_ssh_permit_root_login }}

# 是否允许密码认证
PasswordAuthentication {{ security_ssh_password_authentication }}

# 是否允许公钥认证
PubkeyAuthentication {{ security_ssh_pubkey_authentication }}

# 授权密钥文件位置
AuthorizedKeysFile .ssh/authorized_keys

# ============================================
# 安全限制配置
# ============================================

# 最大认证尝试次数
MaxAuthTries {{ security_ssh_max_auth_tries }}

# 客户端保活间隔（秒）
ClientAliveInterval {{ security_ssh_client_alive_interval }}

# 客户端保活最大计数
ClientAliveCountMax {{ security_ssh_client_alive_count_max }}

# 禁止空密码登录
PermitEmptyPasswords no

# 禁用挑战响应认证
ChallengeResponseAuthentication no

# 禁用Kerberos认证
KerberosAuthentication no

# 禁用GSSAPI认证
GSSAPIAuthentication no

# 使用PAM认证
UsePAM yes

# ============================================
# 访问控制配置
# ============================================

# 允许登录的用户列表
{% if security_ssh_allow_users %}
AllowUsers {{ security_ssh_allow_users | join(' ') }}
{% endif %}

# 拒绝登录的用户列表
{% if security_ssh_deny_users %}
DenyUsers {{ security_ssh_deny_users | join(' ') }}
{% endif %}

# 允许登录的用户组列表
{% if security_ssh_allow_groups %}
AllowGroups {{ security_ssh_allow_groups | join(' ') }}
{% endif %}

# 拒绝登录的用户组列表
{% if security_ssh_deny_groups %}
DenyGroups {{ security_ssh_deny_groups | join(' ') }}
{% endif %}

# ============================================
# 日志记录配置
# ============================================

# 系统日志设施
SyslogFacility AUTHPRIV

# 日志记录级别
LogLevel INFO

# ============================================
# 网络连接配置
# ============================================

# 地址族（仅IPv4）
AddressFamily inet

# 监听地址
ListenAddress 0.0.0.0

# TCP保活机制
TCPKeepAlive yes

# ============================================
# 安全增强配置
# ============================================

# 禁止用户环境变量设置
PermitUserEnvironment no

# 延迟压缩（登录后才启用）
Compression delayed

# 禁用DNS反向解析（提高连接速度）
UseDNS no

# 不显示每日消息
PrintMotd no

# 显示最后登录信息
PrintLastLog yes

# TCP保活机制
TCPKeepAlive yes

# 使用权限分离
UsePrivilegeSeparation yes

# 严格模式检查文件权限
StrictModes yes

# 忽略.rhosts文件
IgnoreRhosts yes

# 禁用rhosts RSA认证
RhostsRSAAuthentication no

# 禁用基于主机的认证
HostbasedAuthentication no

# ============================================
# 转发和隧道配置
# ============================================

# 禁止隧道设备
PermitTunnel no

# 禁止TCP转发
AllowTcpForwarding no

# 禁止SSH代理转发
AllowAgentForwarding no

# 禁止网关端口
GatewayPorts no

# 禁止X11转发
X11Forwarding no

# X11显示偏移
X11DisplayOffset 10

# X11使用本地主机
X11UseLocalhost yes

# ============================================
# 子系统配置
# ============================================

# SFTP子系统配置
Subsystem sftp /usr/libexec/openssh/sftp-server

# ============================================
# 登录横幅配置
# ============================================

# 登录前显示的横幅文件
{% if security_ssh_banner is defined %}
Banner {{ security_ssh_banner }}
{% endif %}

# ============================================
# 连接限制配置
# ============================================

# 最大启动连接数（开始:比率:最大）
MaxStartups 10:30:100

# 每个连接的最大会话数
MaxSessions 4

# 登录宽限时间（秒）
LoginGraceTime 60